package com.okhttp.retrofit;

import java.util.Map;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PartMap;
import retrofit2.http.QueryMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;

/**
 * @author GYL
 * @dateTime 2020/4/21-17:02
 * @description 通用 Get , post , file上传下载请求，返回ResponseBody
 */
//@ApiGenerateService(BaseResponseBodyHandler.class)
public interface GeneralRequest {
  
  //-------------------Get 请求----------------
  /**
   * 发送Get请求
   * @param url URL路径
   */
  @GET
  Call<ResponseBody> doGet(@Url String url);
  
  /**
   * 发送Get 请求
   * @param url URL路径
   * @param parm 参数
   * @return
   */
  @GET
  Call<ResponseBody>doGet(@Url String url,@QueryMap Map parm);
  
  //------------- post 提交 -----------------
  
  /**
   * 发送Post请求
   * @param url URL路径
   * @param paramMap 请求参数
   */
  @FormUrlEncoded
  @POST
  Call<ResponseBody> doPost(@Url String url, @FieldMap Map paramMap);
  
  /**
   * 发送Post请求
   *
   * @param url URL路径
   */
  @FormUrlEncoded
  @POST
  Call<ResponseBody> doPost(@Url String url);
  
  // 文件上传下载
  
  /**
   * 上传文件请求
   * @param url URL路径
   * @param paramMap 请求参数
   */
  @Multipart
  @POST
  Call<ResponseBody> postFile(@Url String url, @PartMap Map<String, RequestBody> paramMap);
  
  /**
   * 下载文件get请求
   * @param url 链接地址
   */
  @Streaming
  @GET
  Call<ResponseBody> download(@Url String url);
  
}
